// 扁平化
let arr = [1, 2, [3, 4], [5, [6, 7]]]
// es6处理
// console.log(arr.flat(Infinity))

// 递归处理
let result = []
let flatten = function (arr) {
  for (let i = 0; i < arr.length; i++) {
    let item = arr[i]
    if (Array.isArray(arr[i])) {
      flatten(item)
    } else {
      result.push(item)
    }
  }
  return result
}

// console.log(flatten(arr))

// 利用 reduce 函数迭代
function flatten2(arr) {
  return arr.reduce((pre, cur) => {
    return pre.concat(Array.isArray(cur) ? flatten(cur) : cur)
  }, [])
}

// console.log(flatten2(arr))

// 扩展运算符
function flatten3(arr) {
  while (arr.some((item) => Array.isArray(item))) {
    arr = [].concat(...arr)
  }
  return arr
}

console.log(flatten(arr))